home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / vectors_lightsourced / vector.s next >
Text File  |  1980-01-03  |  25KB  |  1,378 lines

  1. *******************************************************************************
  2. **    LIGHTSOURCED VECTOR
  3. **    CODED BY CRADON/MATRIX
  4. **    ASM-ONE FORMAT
  5. *******************************************************************************
  6.         section    aaa,code_c
  7.  
  8. AbsExecBase:        equ    $4
  9. _LVOLoadView:        equ    -$DE
  10. _LVOCloseLibrary:    equ    -$19E
  11. _LVOOpenLibrary:    equ    -$228
  12. _LVOWaitTOF:        equ    -$10E
  13. _LVOCacheControl:    equ    -$288
  14. _LVOSupervisor:        equ    -$1E
  15. AttnFlags:        equ    $128
  16. tv_UserIntVects:    equ    $100
  17. tv_Lev3IntVect:        equ    $6C
  18.  
  19. intreq:            equ    $9C
  20. cop1lch:        equ    $80
  21. dmacon:            equ    $96
  22. intenar:        equ    $1C
  23. dmaconr:        equ    $2
  24. copjmp1:        equ    $88
  25. intena:            equ    $9A
  26. spr0:            equ    $140
  27. sd_dataa:        equ    $4
  28. color0            equ    $180
  29. bltafwm:        equ    $44
  30.  
  31. ExecBase:        equ    $0
  32. LIB_VERSION:        equ    $14
  33.  
  34. *-------------- OS Shutdown..
  35.  
  36. ProgStart:    move.l    (AbsExecBase).w,a6
  37.         moveq    #0,d0
  38.         lea    GfxName(pc),a1
  39.         jsr    _LVOOpenLibrary(a6)        ;open gfx library
  40.         lea    GfxBase(pc),a0
  41.         move.l    d0,(a0)                ;save base
  42.         beq    GfxError
  43.  
  44. *-------------- Do "LoadView" to Reset all Copperlist regs to 0..
  45.  
  46.         move.l    a6,a5
  47.         move.l    d0,a6
  48.         lea    _OurView(pc),a0
  49.         move.l    34(a6),(a0)
  50.         sub.l    a1,a1
  51.         jsr    _LVOLoadView(a6)        ;get system copper
  52.         jsr    _LVOWaitTOF(a6)            ;(clears AGA Regs)
  53.         jsr    _LVOWaitTOF(a6)            ;wait for syslace
  54.  
  55.         move.l    a6,a1
  56.         move.l    a5,a6
  57.         jsr    _LVOCloseLibrary(a6)        ;cloe gfxbase
  58.  
  59. *-------------- Determine what CPU we got...
  60.  
  61.         move.l    (AbsExecBase).w,a6
  62.         jsr    -132(a6)            ;forbid()
  63.  
  64.  
  65. *-------------- Preserve OS DMA/Intena then turn it off
  66.  
  67. KillDMA:    lea    $DFF000,a6
  68.         move.w    dmaconr(a6),OldDMA
  69.         move.w    intenar(a6),OldINT
  70.         move.l    #$7FFF7FFF,intena(a6)
  71.         move.w    #$7FFF,dmacon(a6)
  72.  
  73. *-------------- setup screen
  74.  
  75.         move.l    #screen2,d0
  76.         lea    planes,a0
  77.         move.w  d0,6(a0)
  78.         swap    d0
  79.         move.w  d0,2(a0)
  80.         swap    d0
  81.  
  82.         move.l    #copper,d0
  83.         lea    adress,a0
  84.         move.w    d0,6(a0)
  85.         swap    d0
  86.         move.w    d0,2(a0)
  87.  
  88.         move.w    #%1000001111000000,$dff096
  89.         move.w     #%1100000000110000,$dff09a
  90.  
  91. *-------------- turn on new copperlist
  92.  
  93.         move.l    #copper,$dff080
  94.  
  95. *-------------- Main vbl
  96.  
  97. loop        cmp.b    #255,$dff006
  98.         bne.s    loop
  99.  
  100.         bsr.w    clear
  101.         bsr.w    vector
  102.         bsr.w    flip_screen
  103.  
  104.         btst    #6,$bfe001
  105.         bne.b    loop
  106.  
  107. *-------------- restore os...
  108.  
  109.         lea    $dff000,a5
  110.         move.l    #$7FFF7FFF,intena(a5)        ;kill interrupts
  111.         move.w    #$7FFF,dmacon(a5)        ;and screen
  112.  
  113.  
  114.         move.w    OldINT(pc),d0
  115.         bset    #15,d0
  116.         move.w    d0,intena(a5)            ;restore intena
  117.  
  118.         move.w    OldDMA(pc),d0
  119.         bset    #15,d0
  120.         move.w    d0,dmacon(a5)            ;restore dma
  121.  
  122.         move.l    4.w,a6
  123.         jsr    -138(a6)            ;forbid()
  124.  
  125.         move.l    GfxBase(pc),a6
  126.         move.l    _OurView(pc),a1
  127.         jsr    _LVOLoadView(a6)        ;free system copview
  128.  
  129.         move.l    $26(a6),cop1lch(a5)        ;restore system copper
  130. GfxError:    moveq    #0,d0
  131.         rts                    ;exit back to OS...
  132.  
  133. GfxName:    dc.b    'graphics.library',0,0
  134. GfxBase:    dc.l    0
  135. _OurView:    dc.l    0
  136. OldDMA:        dc.w    0
  137. OldINT:        dc.w    0
  138. OldLev3:    dc.l    0
  139. _VBR:        dc.l    0
  140.         even
  141. ** FILLED VECTOR **************************************************************
  142.  
  143. vector    bsr.w    angles                ; calculate new view angle
  144.     lea.l    points(pc),a1            ; point on next plane data
  145.     lea.l    sin_table,a2            ; point at sinus table
  146.     lea.l    cos_table,a3            ; point at cosinus table
  147. obloop    cmpi.w    #$ffff,(a1)            ; no more lines in this plane?
  148.     beq.w    vecout
  149.     move.l    screen_adress(pc),a0        ; lets work on this frame
  150.     move.w    (a1)+,d0            ; x-normal
  151.     move.w    (a1)+,d1            ; y-normal
  152.     move.w    (a1)+,d2            ; z-normal
  153.     bsr.w    normal                ; rotate plane's vector-normal.
  154.     move.w    (a1)+,d3            ; get z-coord limit
  155.     cmp.w    d3,d2                ; front- or backside of plane?
  156.     bgt.s    plane                ; if front, then draw plane
  157.     move.w    (a1)+,d0
  158.     move.w    (a1)+,d0
  159.     lsl.w    #3,d0                ; *4 *2 = delta-adress in bytes
  160.     ext.l    d0
  161.     add.l    d0,a1                ; point pÅ ny plan
  162.     bra.b    obloop
  163. plane    move.w    (a1)+,d0            ; selected colour (bitplan)
  164.     move.w    #10240,d1
  165.     mulu    d0,d1
  166.     add.l    d1,a0
  167.     bsr.w    light                ; lightsource this coming plane
  168.     move.w    (a1)+,counter            ; antal linier i plan
  169. linier    move.w    (a1)+,d0            ; get line coordinates
  170.     move.w    (a1)+,d1
  171.     move.w    (a1)+,d2
  172.     sub.w    xcenter(pc),d0            ; object with center in origo
  173.     sub.w    ycenter(pc),d1
  174.     sub.w    zcenter(pc),d2
  175.     bsr.b    rotate                ; rotate 3d point
  176.     add.w    zcenter(pc),d2
  177.     bsr.w    convert                ; convert from 3d to 2d
  178.     add.w    xcenter(pc),d0
  179.     add.w    ycenter(pc),d1
  180.     bsr.w    extrem                ; note plane max and min
  181.     bsr.w    line                ; draw line from last point
  182.     sub.w    #1,counter
  183.     tst.w    counter                ; plane finished?
  184.     bne.b    linier                ; if not: work on next line
  185.     bsr.w    fill                ; fill plane
  186.     bsr.w    global                ; note global extremes (clear)
  187.     move.w    #256,ymin            ; reset for next plane
  188.     clr.w    ymax
  189.     move.w    #320,xmin
  190.     clr.w    xmax
  191.     bra.w    obloop
  192. vecout    rts    
  193.  
  194. ** ROTATE 3D POINT ************************************************************
  195.  
  196. rotate    move.w    xvinkel(pc),d5            ; x angle
  197.     add.w    d5,d5                ; x angle *2
  198.     move.w    (a3,d5.w),d3            ; cos(xgrad)
  199.     muls    d1,d3                ; y*cos(xgrad)
  200.     move.w    (a2,d5.w),d4            ; sin(xgrad)
  201.     muls    d2,d4                ; z*sin(xgrad)
  202.     sub.l    d4,d3                ; y*cos(xgrad) - z*sin(xgrad)
  203.     add.l    d3,d3
  204.     add.l    d3,d3                ; 4*(y*cos(xgrad)-z*sin(xgrad))
  205.     move.l    d3,y1                ; y-coordinate around x axis
  206.  
  207.     move.w    (a2,d5.w),d3            ; sin(xgrad)
  208.     muls    d1,d3                ; y*sin(xgrad)
  209.     move.w    (a3,d5.w),d4            ; cos(xgrad)
  210.     muls    d2,d4                ; z*cos(xgrad)
  211.     add.l    d4,d3                ; y*sin(xgrad) + z*cos(xgrad)
  212.     add.l    d3,d3
  213.     add.l    d3,d3                ; 4*(y*sin(xgrad)+z*cos(xgrad))
  214.     move.l    d3,z1                ; z-coordinate around x axis
  215.  
  216.     move.w    yvinkel(pc),d6            ; y angle
  217.     add.w    d6,d6                ; y angle *2
  218.     move.w    (a3,d6.w),d3            ; cos(ygrad)
  219.     muls    d0,d3                ; x*cos(ygrad)
  220.     move.w    (a2,d6.w),d4            ; sin(ygrad)
  221.     muls    z1(pc),d4            ; z*sin(ygrad)
  222.     sub.l    d4,d3                ; x*cos(ygrad) - z*sin(ygrad)
  223.     add.l    d3,d3
  224.     add.l    d3,d3                ; 4*(x*cos(ygrad)-z*sin(ygrad))
  225.     move.l    d3,x2                ; x-coordinate around y axis
  226.  
  227.     move.w    (a2,d6.w),d2            ; sin(ygrad)
  228.     muls    d0,d2                ; x*sin(ygrad)
  229.     move.w    (a3,d6.w),d4            ; cos(ygrad)
  230.     muls    z1(pc),d4            ; z*cos(ygrad)
  231.     add.l    d4,d2                ; x*sin(ygrad) + z*cos(ygrad)
  232.     add.l    d2,d2
  233.     add.l    d2,d2                ; 4*(x*sin(ygrad)+z*cos(ygrad))
  234.     swap    d2                ; fast division by 65535
  235.     ext.l    d2                ; z-coordinate around y and x
  236.  
  237.     move.w    zvinkel(pc),d7            ; z angle
  238.     add.w    d7,d7                ; z angle *2
  239.     move.w    (a3,d7.w),d0            ; cos(zgrad)
  240.     muls    x2(pc),d0            ; x*cos(zgrad)
  241.     move.w    (a2,d7.w),d4            ; sin(zgrad)
  242.     muls    y1(pc),d4            ; y*sin(zgrad)
  243.     sub.l    d4,d0                ; x*cos(zgrad) - y*sin(zgrad)
  244.     add.l    d0,d0
  245.     add.l    d0,d0                ; 4*(x*cos(zgrad)-y*sin(zgrad))
  246.     swap    d0                ; fast division by 65535
  247.     ext.l    d0                ; x-coordinate around y and z
  248.  
  249.     move.w    (a2,d7.w),d1            ; sin(zgrad)
  250.     muls    x2(pc),d1            ; x*sin(zgrad)
  251.     move.w    (a3,d7.w),d3            ; cos(zgrad)
  252.     muls    y1(pc),d3            ; y*cos(zgrad)
  253.     add.l    d3,d1                ; x*sin(zgrad) + y*cos(zgrad)
  254.     add.l    d1,d1
  255.     add.l    d1,d1                ; 4*(x*sin(zgrad)+y*cos(zgrad))
  256.     swap    d1                ; fast division by 65535
  257.     ext.l    d1                ; y-coordinate around x and z
  258.     rts
  259.  
  260. ** ROTATE PLANES VECTOR NORMAL ************************************************
  261.  
  262. normal    move.w    xvinkel(pc),d5
  263.     add.w    d5,d5
  264.     move.w    yvinkel(pc),d6
  265.     add.w    d6,d6
  266.     move.w    (a2,d5.w),d3
  267.     muls    d1,d3
  268.     move.w    (a3,d5.w),d4
  269.     muls    d2,d4
  270.     add.l    d4,d3
  271.     add.l    d3,d3
  272.     add.l    d3,d3
  273.     move.l    d3,z1
  274.     move.w    (a2,d6.w),d2
  275.     muls    d0,d2
  276.     move.w    (a3,d6.w),d4
  277.     muls    z1(pc),d4
  278.     add.l    d4,d2
  279.     add.l    d2,d2
  280.     add.l    d2,d2
  281.     swap    d2
  282.     ext.l    d2
  283.     rts
  284.  
  285. ** CONVERT POINT FROM 3D TO 2D ************************************************
  286.  
  287. convert    muls    zoom(pc),d0
  288.     divs    d2,d0
  289.     muls    zoom(pc),d1
  290.     divs    d2,d1
  291.     rts
  292.  
  293. ** DRAW LINE ******************************************************************
  294.  
  295. line    ext.l    d0                ; rule out any crap!
  296.     ext.l    d1
  297.     tst.w    (a1)+                ; draw line from last point?
  298.     bne.b    draw
  299.     move.w    d0,lastx            ; no! then just save this point
  300.     move.w    d1,lasty
  301.     rts
  302. draw    move.w    lastx(pc),d2
  303.     move.w    d0,lastx
  304.     move.w    lasty(pc),d3
  305.     move.w    d1,lasty
  306.     exg    d1,d2    
  307.     cmp    d2,d3
  308.     beq.w    drawout
  309.     bpl.b    bline
  310.     exg    d0,d1
  311.     exg    d2,d3
  312. bline    subq    #1,d3
  313.     move    d1,d6
  314.     sub    d0,d6
  315.     bmi.s    xl0
  316.     move.w    d3,d7
  317.     sub.w    d2,d7
  318.     bmi.s    xg0yl0
  319.     move.w    d7,d5
  320.     sub.w    d6,d5
  321.     bmi.s    o4
  322.     move.b    #1,bltc1
  323.     bra.s    octok
  324. o4    move.b    #17,bltc1
  325.     bra.s    octok
  326. xg0yl0    neg.w    d7
  327.     move.w    d7,d5
  328.     sub.w    d6,d5
  329.     bmi.s    o6
  330.     move.b    #5,bltc1
  331.     bra.s    octok
  332. o6    move.b    #25,bltc1
  333.     bra.s    octok
  334. xl0    neg.w    d6
  335.     move.w    d3,d7
  336.     sub.w    d2,d7
  337.     bmi.s    xl0yl0
  338.     move.w    d7,d5
  339.     sub.w    d6,d5
  340.     bmi.s    o5
  341.     move.b    #9,bltc1
  342.     bra.s    octok
  343. o5    move.b    #21,bltc1
  344.     bra.s    octok
  345. xl0yl0    neg.w    d7
  346.     move.w    d7,d5
  347.     sub.w    d6,d5
  348.     bmi.s    o7
  349.     move.b    #13,bltc1
  350.     bra.s    octok
  351. o7    move.b    #29,bltc1
  352. octok    moveq    #0,d4
  353.     move.w    d0,d4
  354.     and.w    #15,d4
  355.     swap    d4
  356.     lsr.l    #4,d4
  357.     or.w    #$b4a,d4
  358.     moveq    #0,d3
  359.     lsl    #3,d2
  360.     move    d2,d3
  361.     lsl    #2,d2
  362.     add    d2,d3
  363.     lsr    #3,d0
  364.     and.b    #$fe,d0
  365.     add    d0,d3
  366.     add.l    a0,d3
  367.     tst    d5
  368.     bmi.s    xmaxi
  369.     exg    d6,d7
  370.     neg.w    d5
  371. xmaxi    move.w    d6,d1
  372.     add.w    #1,d1
  373.     lsl.w    #6,d1
  374.     add.w    #2,d1
  375.     move.w    d5,d0
  376.     add.w    d7,d0
  377.     lsl.w    #2,d7
  378.     move.w    d0,d2
  379.     sub.w    d6,d2
  380.     add.w    d2,d2
  381.     tst.w    d0
  382.     bpl.s    plus
  383.     or.b    #64,bltc1
  384. plus    add.w    d0,d0
  385.     ext.l    d0
  386. wdraw    btst    #6,$dff002
  387.     bne.s    wdraw
  388.     clr    d6
  389.     move.b    bltc1,d6
  390.     or.w    #2,d6
  391.     move.w    d6,$dff042
  392.     move.w    d4,$dff040
  393.     clr    $dff070
  394.     move.w    #$8000,$dff074
  395.     move.w    #$ffff,$dff072
  396.     move.l    #$ffffffff,$dff044
  397.     move.w    #40,$dff060
  398.     move.w    #40,$dff066
  399.     move.w    d7,$dff062
  400.     move.w    d2,$dff064
  401.     move.l    d3,$dff048
  402.     move.l    d3,$dff054
  403.     move.l    d0,$dff050
  404.     move.w    d1,$dff058
  405. drawout    rts
  406.  
  407. ** NOTE MIN AND MAX FOR THIS PLANE ********************************************
  408.  
  409. extrem    cmp.w    ymin(pc),d1
  410.     bhi.b    noymin
  411.     move.w    d1,ymin
  412. noymin    cmp.w    ymax(pc),d1
  413.     blt.b    noymax
  414.     move.w    d1,ymax
  415. noymax    cmp.w    xmin(pc),d0
  416.     bhi.b    noxmin
  417.     move.w    d0,xmin
  418. noxmin    cmp.w    xmax(pc),d0
  419.     blt.b    noxmax
  420.     move.w    d0,xmax
  421. noxmax    rts
  422.  
  423. ** NOTE MIN AND MAX FOR ALL PLANES ********************************************
  424.  
  425. global    move.w    xmin(pc),d0
  426.     cmp.w    globalxmin(pc),d0
  427.     bhi.b    noglobx
  428.     move.w    d0,globalxmin
  429. noglobx    move.w    xmax(pc),d0
  430.     cmp.w    globalxmax(pc),d0
  431.     blt.b    globoy1
  432.     move.w    d0,globalxmax
  433. globoy1    move.w    ymin(pc),d0
  434.     cmp.w    globalymin(pc),d0
  435.     bhi.b    nogloby
  436.     move.w    d0,globalymin
  437. nogloby    move.w    ymax(pc),d0
  438.     cmp.w    globalymax(pc),d0
  439.     blt.b    globout
  440.     move.w    d0,globalymax
  441. globout    rts    
  442.  
  443. ** CLACULATE NEW VIEW ANGLE ***************************************************
  444.  
  445. angles    move.w    ydelta(pc),d0
  446.     add.w    d0,yvinkel            ; new y angle
  447.     cmp.w    #512,yvinkel
  448.     blt.b    xangle
  449.     sub.w    #512,yvinkel
  450. xangle    move.w    xdelta(pc),d0
  451.     add.w    d0,xvinkel            ; new x angle
  452.     cmp.w    #512,xvinkel
  453.     blt.b    zangle
  454.     sub.w    #512,xvinkel
  455. zangle    move.w    zdelta(pc),d0
  456.     add.w    d0,zvinkel            ; new z angle
  457.     cmp.w    #512,zvinkel
  458.     blt.b    anglout    
  459.     sub.w    #512,zvinkel
  460. anglout    rts
  461.  
  462. ** LIGHTSOURCE CURRENT PLANE **************************************************
  463.  
  464. light    add.l    d0,d0                ; d0 = offset in offset-table!
  465.     lea    colour,a4
  466.     lea    offset(pc),a5
  467.     lea    colours(pc),a6
  468.     move.w    (a5,d0.w),d1            ; d1 = offset from colour label
  469.     divu    #7,d2                ; adjust to colourstable offset
  470.     add.l    d2,d2
  471.     move.w    (a6,d2.w),d0
  472.     move.w    d0,(a4,d1.w)
  473.     rts
  474.  
  475. ** FLIP BETWEEN FRAMESBUFFERS *************************************************
  476.  
  477. flip_screen
  478.     cmp.l     #screen1,screen_adress        
  479.     beq.s    flip_to_screen2
  480.     lea.l    planes,a0
  481.     move.l    #screen2,d0
  482.     move.w    d0,6(a0)
  483.     swap     d0
  484.     move.w    d0,2(a0)
  485.     move.l    #screen2+[256*40],d0
  486.     move.w    d0,14(a0)
  487.     swap     d0
  488.     move.w    d0,10(a0)
  489.     move.l    #screen2+[512*40],d0
  490.     move.w    d0,22(a0)
  491.     swap     d0
  492.     move.w    d0,18(a0)
  493.     move.l    #screen1,screen_adress    
  494.     rts
  495. flip_to_screen2
  496.     lea.l    planes,a0
  497.     move.l    #screen1,d0
  498.     move.w    d0,6(a0)
  499.     swap     d0
  500.     move.w    d0,2(a0)
  501.     move.l    #screen1+[256*40],d0
  502.     move.w    d0,14(a0)
  503.     swap     d0
  504.     move.w    d0,10(a0)
  505.     move.l    #screen1+[512*40],d0
  506.     move.w    d0,22(a0)
  507.     swap     d0
  508.     move.w    d0,18(a0)
  509.     move.l    #screen2,screen_adress
  510.     rts
  511.  
  512. ** CLEAR SCREEN ***************************************************************
  513.  
  514. clear    moveq    #0,d1
  515.     move.l    d1,d2
  516.     move.l    d1,d3
  517.     move.l    screen_adress(pc),d0
  518.     move.w    globalxmin(pc),d1    
  519.     move.w    globalxmax(pc),d2
  520.     sub.w    d1,d2                ; d2 = clear width in pixels
  521.     lsr.w    #3,d1                ; d1 = left pixels in bytes
  522.     ext.l    d1
  523.     subq.w    #1,d1
  524.     add.l    d1,d0                ; d0 = start address
  525.     lsr.w    #4,d2                ; d2 = clear width in words
  526.     add.w    #3,d2                ; for safety    
  527.     move.w    d2,d1
  528.     mulu    #2,d1                ; d1 = clear width in bytes
  529.     move.w    #40,d3
  530.     sub.w    d1,d3                ; d3 = clear modulo
  531.     move.w    globalymin(pc),d4
  532.     sub.w    safety(pc),d4
  533.     move.w    globalymax(pc),d5
  534.     sub.w    d4,d5                ; hight
  535.     add.w    safety(pc),d5
  536.     mulu    #40,d4
  537.     ext.l    d4
  538.     add.l    d4,d0
  539.     lsl.w    #6,d5
  540.     or.w    d5,d2                ; hight and width
  541.  
  542. wait1    btst    #14,$dff002
  543.     bne.s    wait1
  544.     move.w    #$0100,$dff040
  545.     move.w    #$0000,$dff042
  546.     move.l    #$ffffffff,$dff044
  547.     move.l    d0,$dff054
  548.     move.w    d3,$dff066
  549.     move.w    d2,$dff058
  550.     add.l    #10240,d0            ; point on next plane
  551. wait2    btst    #14,$dff002
  552.     bne.s    wait2
  553.     move.w    #$0100,$dff040
  554.     move.w    #$0000,$dff042
  555.     move.l    d0,$dff054
  556.     move.w    d3,$dff066
  557.     move.w    d2,$dff058
  558.     add.l    #10240,d0            ; point on next plane
  559. wait3    btst    #14,$dff002
  560.     bne.s    wait3
  561.     move.w    #$0100,$dff040
  562.     move.w    #$0000,$dff042
  563.     move.l    d0,$dff054
  564.     move.w    d3,$dff066
  565.     move.w    d2,$dff058
  566.     move.w    #320,globalxmin            ; reset globals
  567.     move.w    #0,globalxmax
  568.     move.w    #256,globalymin
  569.     move.w    #0,globalymax
  570.     rts
  571.  
  572. ** blitter fill (descending mode) *********************************************
  573.  
  574. fill    move.l    a0,d0                ; screen address
  575.     moveq    #0,d1
  576.     move.l    d1,d2
  577.     move.l    d1,d3
  578.     move.w    ymax(pc),d1
  579.     mulu    #40,d1    
  580.     add.l    d1,d0                ; d0 = buttom vertical line
  581.     move.w    #320,d2
  582.     sub.w    xmax(pc),d2
  583.     lsr.w    #3,d2                ; 16 pixel precision
  584.     ext.l    d2
  585.     sub.l    d2,d0                ; d0 = start address 
  586.     move.w    xmax(pc),d1
  587.     sub.w    xmin(pc),d1            ; d1 = fill width in pixels
  588.     lsr.w    #4,d1                ; d1 = fill width in words
  589.     addq.w    #3,d1
  590.     move.w    d1,d2
  591.     move.w    #40,d3                ; full screen modulo
  592.     add.w    d2,d2                ; d2 = fill width in bytes
  593.     sub.w    d2,d3                ; d3 = fill modulo
  594.     move.w    ymax(pc),d2
  595.     sub.w    ymin(pc),d2            ; d2 = hight in pixels
  596.     lsl.w    #6,d2                ; place hight on right bits
  597.     or.w    d2,d1                ; d1 = fill hight and width
  598. fready    btst    #14,$dff002
  599.     bne.b    fready
  600.     move.l    d0,$dff050
  601.     move.l    d0,$dff054
  602.     move.w    #$09f0,$dff040            ; minterm d=a
  603.     move.w    #%0000000000010010,$dff042    ; exclusive fill (bit 4)
  604.     move.l    #$ffffffff,$dff044        ; masks
  605.     move.w    d3,$dff064            ; a modulo
  606.     move.w    d3,$dff066            ; d modulo
  607.     move.w    d1,$dff058            ; fill hight and start address
  608. we3draw    btst    #6,$dff002
  609.     bne.s    we3draw
  610.     rts
  611.         
  612. ** DATA ***********************************************************************
  613.     
  614. screen_adress    dc.l    screen1
  615. xcenter        dc.w    159
  616. ycenter        dc.w    128
  617. zcenter        dc.w    460
  618. zoom        dc.w    210
  619. safety        dc.w    6    ; high safety takes more raster
  620. counter        dc.w    0
  621. xvinkel        dc.w    0
  622. yvinkel        dc.w    0
  623. zvinkel        dc.w    0
  624. ydelta        dc.w    2
  625. xdelta        dc.w    3
  626. zdelta        dc.w    1
  627. y1        dc.l    0
  628. z1        dc.l    0
  629. x2        dc.l    0
  630. lastx        dc.w    0
  631. lasty        dc.w    0
  632. ymin        dc.w    256
  633. ymax        dc.w    0
  634. xmin        dc.w    320
  635. xmax        dc.w    0
  636. globalymin    dc.w    120
  637. globalymax    dc.w    140
  638. globalxmin    dc.w    150
  639. globalxmax    dc.w    170
  640. offset        dc.w    2,6,10,2,2,2,2,2
  641. colours        dc.w    $000,$002,$013,$024,$035,$046,$057,$068
  642.         dc.w    $079,$08a,$09b,$0ac,$0bd,$0ce,$0df,$fff
  643. bltc1        dc.b    0
  644.         even
  645.  
  646. ** OBJECT DATA ****************************************************************
  647. **
  648. ** STRUCTURE:    DC.W    XN,YN,ZX,LIMIT,BITPLAN,COUNT
  649. **        DC.W    X,Y,Z,S
  650. **
  651. ** (XN,YN,ZN):    PLANE NORMAL-VECTOR (MUST STAND IN AN 90° ANGLE ON PLANE).
  652. ** LIMIT:    ZN LIMIT (TO DETERMINE WHEN WE ARE SEEING FRONT OR BACKSIDE).
  653. ** BITPLAN:    SELECT COLOUR FOR THIS PLANE 0,1,2.
  654. ** COUNT:    NUMBER OF POINTS THAT THIS PLANE CONSISTS OF.
  655. ** (X,Y,Z):    POINT COORDINATES.
  656. ** S:        0:MOVE TO THIS POINT. 1:DRAW LINE FROM THIS POINT TO LAST ONE.
  657. **
  658.  
  659. points    dc.w    0,0,100,27,0,5
  660.     dc.w    29,-2,330,0
  661.     dc.w    29,258,330,1
  662.     dc.w    289,258,330,1
  663.     dc.w    289,-2,330,1
  664.     dc.w    29,-2,330,1
  665.     dc.w    100,0,0,27,1,5    
  666.     dc.w    29,-2,590,0
  667.     dc.w    29,258,590,1
  668.     dc.w    29,258,330,1
  669.     dc.w    29,-2,330,1
  670.     dc.w    29,-2,590,1
  671.     dc.w    -100,0,0,27,1,5    
  672.     dc.w    289,-2,590,0
  673.     dc.w    289,258,590,1
  674.     dc.w    289,258,330,1
  675.     dc.w    289,-2,330,1
  676.     dc.w    289,-2,590,1
  677.     dc.w    0,0,-100,27,0,5
  678.     dc.w    29,-2,590,0
  679.     dc.w    29,258,590,1
  680.     dc.w    289,258,590,1
  681.     dc.w    289,-2,590,1
  682.     dc.w    29,-2,590,1
  683.     dc.w    0,-100,0,27,2,5
  684.     dc.w    29,258,330,0
  685.     dc.w    29,258,590,1
  686.     dc.w    289,258,590,1
  687.     dc.w    289,258,330,1
  688.     dc.w    29,258,330,1
  689.     dc.w    0,100,0,27,2,5
  690.     dc.w    29,-2,330,0
  691.     dc.w    29,-2,590,1
  692.     dc.w    289,-2,590,1
  693.     dc.w    289,-2,330,1
  694.     dc.w    29,-2,330,1
  695.  
  696.     dc.w    $ffff,$ffff    ; signal: no more planes to draw!
  697.     even
  698.     
  699.     section    b,data_c
  700.  
  701. ** copperlist *****************************************************************
  702.  
  703. copper    dc.w    $0106,$0000,$01fc,$0000
  704.     dc.w    $008e,$2c81,$0090,$2cc1
  705.     dc.w    $0092,$0038,$0094,$00d0
  706.     dc.w    $0102,$0000,$0104,$0000
  707.     dc.w    $0108,$0000,$010a,$0000
  708.  
  709. colour    dc.w    $0182,$0400    ; 2
  710.     dc.w    $0184,$0600    ; 6
  711.     dc.w    $0188,$0800    ; 10
  712.  
  713.     dc.w    $0186,$0999,$018a,$00f0
  714.     dc.w    $018c,$00f0,$018e,$0813
  715.  
  716. planes    dc.w    $00e0,$0000,$00e2,$0000
  717.     dc.w    $00e4,$0000,$00e6,$0000
  718.     dc.w    $00e8,$0000,$00ea,$0000
  719.     dc.w    $3001,$ff00,$0100,$3200
  720.     dc.w    $ffe1,$fffe,$2901,$ff00
  721.     dc.w    $0100,$0200
  722.  
  723. adress    dc.w    $0084,$0000
  724.     dc.w    $0086,$0000
  725.     dc.w    $008a,$0000    ; restart copperlist
  726.     dc.w    $ffff,$fffe
  727.  
  728. ** SCREEN *********************************************************************
  729.  
  730.     even
  731. screen1    ds.b    [320/8*768]
  732. screen2    ds.b    [320/8*768]
  733.     even
  734.  
  735. sin_table
  736.     dc.w     0 
  737.     dc.w     201 
  738.     dc.w     402 
  739.     dc.w     603 
  740.     dc.w     803 
  741.     dc.w     1004 
  742.     dc.w     1205 
  743.     dc.w     1405 
  744.     dc.w     1605 
  745.     dc.w     1805 
  746.     dc.w     2005 
  747.     dc.w     2204 
  748.     dc.w     2404 
  749.     dc.w     2602 
  750.     dc.w     2801 
  751.     dc.w     2998 
  752.     dc.w     3196 
  753.     dc.w     3393 
  754.     dc.w     3589 
  755.     dc.w     3785 
  756.     dc.w     3980 
  757.     dc.w     4175 
  758.     dc.w     4369 
  759.     dc.w     4563 
  760.     dc.w     4756 
  761.     dc.w     4948 
  762.     dc.w     5139 
  763.     dc.w     5329 
  764.     dc.w     5519 
  765.     dc.w     5708 
  766.     dc.w     5896 
  767.     dc.w     6083 
  768.     dc.w     6269 
  769.     dc.w     6455 
  770.     dc.w     6639 
  771.     dc.w     6822 
  772.     dc.w     7005 
  773.     dc.w     7186 
  774.     dc.w     7366 
  775.     dc.w     7545 
  776.     dc.w     7723 
  777.     dc.w     7900 
  778.     dc.w     8075 
  779.     dc.w     8249 
  780.     dc.w     8423 
  781.     dc.w     8594 
  782.     dc.w     8765 
  783.     dc.w     8934 
  784.     dc.w     9102 
  785.     dc.w     9268 
  786.     dc.w     9434 
  787.     dc.w     9597 
  788.     dc.w     9759 
  789.     dc.w     9920 
  790.     dc.w     10079 
  791.     dc.w     10237 
  792.     dc.w     10393 
  793.     dc.w     10548 
  794.     dc.w     10701 
  795.     dc.w     10853 
  796.     dc.w     11002 
  797.     dc.w     11150 
  798.     dc.w     11297 
  799.     dc.w     11442 
  800.     dc.w     11585 
  801.     dc.w     11726 
  802.     dc.w     11866 
  803.     dc.w     12003 
  804.     dc.w     12139 
  805.     dc.w     12273 
  806.     dc.w     12406 
  807.     dc.w     12536 
  808.     dc.w     12665 
  809.     dc.w     12791 
  810.     dc.w     12916 
  811.     dc.w     13038 
  812.     dc.w     13159 
  813.     dc.w     13278 
  814.     dc.w     13395 
  815.     dc.w     13510 
  816.     dc.w     13622 
  817.     dc.w     13733 
  818.     dc.w     13842 
  819.     dc.w     13948 
  820.     dc.w     14053 
  821.     dc.w     14155 
  822.     dc.w     14255 
  823.     dc.w     14353 
  824.     dc.w     14449 
  825.     dc.w     14543 
  826.     dc.w     14634 
  827.     dc.w     14723 
  828.     dc.w     14810 
  829.     dc.w     14895 
  830.     dc.w     14978 
  831.     dc.w     15058 
  832.     dc.w     15136 
  833.     dc.w     15212 
  834.     dc.w     15286 
  835.     dc.w     15357 
  836.     dc.w     15426 
  837.     dc.w     15492 
  838.     dc.w     15557 
  839.     dc.w     15618 
  840.     dc.w     15678 
  841.     dc.w     15735 
  842.     dc.w     15790 
  843.     dc.w     15842 
  844.     dc.w     15892 
  845.     dc.w     15940 
  846.     dc.w     15985 
  847.     dc.w     16028 
  848.     dc.w     16069 
  849.     dc.w     16107 
  850.     dc.w     16142 
  851.     dc.w     16175 
  852.     dc.w     16206 
  853.     dc.w     16234 
  854.     dc.w     16260 
  855.     dc.w     16284 
  856.     dc.w     16305 
  857.     dc.w     16323 
  858.     dc.w     16339 
  859.     dc.w     16353 
  860.     dc.w     16364 
  861.     dc.w     16372 
  862.     dc.w     16379 
  863. cos_table
  864.     dc.w     16382 
  865.     dc.w     16384 
  866.     dc.w     16382 
  867.     dc.w     16379 
  868.     dc.w     16372 
  869.     dc.w     16364 
  870.     dc.w     16353 
  871.     dc.w     16339 
  872.     dc.w     16323 
  873.     dc.w     16305 
  874.     dc.w     16284 
  875.     dc.w     16260 
  876.     dc.w     16234 
  877.     dc.w     16206 
  878.     dc.w     16175 
  879.     dc.w     16142 
  880.     dc.w     16107 
  881.     dc.w     16069 
  882.     dc.w     16028 
  883.     dc.w     15985 
  884.     dc.w     15940 
  885.     dc.w     15892 
  886.     dc.w     15842 
  887.     dc.w     15790 
  888.     dc.w     15735 
  889.     dc.w     15678 
  890.     dc.w     15618 
  891.     dc.w     15557 
  892.     dc.w     15492 
  893.     dc.w     15426 
  894.     dc.w     15357 
  895.     dc.w     15286 
  896.     dc.w     15212 
  897.     dc.w     15136 
  898.     dc.w     15058 
  899.     dc.w     14978 
  900.     dc.w     14895 
  901.     dc.w     14810 
  902.     dc.w     14723 
  903.     dc.w     14634 
  904.     dc.w     14543 
  905.     dc.w     14449 
  906.     dc.w     14353 
  907.     dc.w     14255 
  908.     dc.w     14155 
  909.     dc.w     14053 
  910.     dc.w     13948 
  911.     dc.w     13842 
  912.     dc.w     13733 
  913.     dc.w     13622 
  914.     dc.w     13510 
  915.     dc.w     13395 
  916.     dc.w     13278 
  917.     dc.w     13159 
  918.     dc.w     13038 
  919.     dc.w     12916 
  920.     dc.w     12791 
  921.     dc.w     12665 
  922.     dc.w     12536 
  923.     dc.w     12406 
  924.     dc.w     12273 
  925.     dc.w     12139 
  926.     dc.w     12003 
  927.     dc.w     11866 
  928.     dc.w     11726 
  929.     dc.w     11585 
  930.     dc.w     11442 
  931.     dc.w     11297 
  932.     dc.w     11150 
  933.     dc.w     11002 
  934.     dc.w     10853 
  935.     dc.w     10701 
  936.     dc.w     10548 
  937.     dc.w     10393 
  938.     dc.w     10237 
  939.     dc.w     10079 
  940.     dc.w     9920 
  941.     dc.w     9759 
  942.     dc.w     9597 
  943.     dc.w     9434 
  944.     dc.w     9268 
  945.     dc.w     9102 
  946.     dc.w     8934 
  947.     dc.w     8765 
  948.     dc.w     8594 
  949.     dc.w     8423 
  950.     dc.w     8249 
  951.     dc.w     8075 
  952.     dc.w     7900 
  953.     dc.w     7723 
  954.     dc.w     7545 
  955.     dc.w     7366 
  956.     dc.w     7186 
  957.     dc.w     7005 
  958.     dc.w     6822 
  959.     dc.w     6639 
  960.     dc.w     6455 
  961.     dc.w     6269 
  962.     dc.w     6083 
  963.     dc.w     5896 
  964.     dc.w     5708 
  965.     dc.w     5519 
  966.     dc.w     5329 
  967.     dc.w     5139 
  968.     dc.w     4948 
  969.     dc.w     4756 
  970.     dc.w     4563 
  971.     dc.w     4369 
  972.     dc.w     4175 
  973.     dc.w     3980 
  974.     dc.w     3785 
  975.     dc.w     3589 
  976.     dc.w     3393 
  977.     dc.w     3196 
  978.     dc.w     2998 
  979.     dc.w     2801 
  980.     dc.w     2602 
  981.     dc.w     2404 
  982.     dc.w     2204 
  983.     dc.w     2005 
  984.     dc.w     1805 
  985.     dc.w     1605 
  986.     dc.w     1405 
  987.     dc.w     1205 
  988.     dc.w     1004 
  989.     dc.w     803 
  990.     dc.w     603 
  991.     dc.w     402 
  992.     dc.w     201 
  993.     dc.w    -1 
  994.     dc.w    -202 
  995.     dc.w    -403 
  996.     dc.w    -604 
  997.     dc.w    -804 
  998.     dc.w    -1005 
  999.     dc.w    -1206 
  1000.     dc.w    -1406 
  1001.     dc.w    -1606 
  1002.     dc.w    -1806 
  1003.     dc.w    -2006 
  1004.     dc.w    -2205 
  1005.     dc.w    -2405 
  1006.     dc.w    -2603 
  1007.     dc.w    -2802 
  1008.     dc.w    -2999 
  1009.     dc.w    -3197 
  1010.     dc.w    -3394 
  1011.     dc.w    -3590 
  1012.     dc.w    -3786 
  1013.     dc.w    -3981 
  1014.     dc.w    -4176 
  1015.     dc.w    -4370 
  1016.     dc.w    -4564 
  1017.     dc.w    -4757 
  1018.     dc.w    -4949 
  1019.     dc.w    -5140 
  1020.     dc.w    -5330 
  1021.     dc.w    -5520 
  1022.     dc.w    -5709 
  1023.     dc.w    -5897 
  1024.     dc.w    -6084 
  1025.     dc.w    -6270 
  1026.     dc.w    -6456 
  1027.     dc.w    -6640 
  1028.     dc.w    -6823 
  1029.     dc.w    -7006 
  1030.     dc.w    -7187 
  1031.     dc.w    -7367 
  1032.     dc.w    -7546 
  1033.     dc.w    -7724 
  1034.     dc.w    -7901 
  1035.     dc.w    -8076 
  1036.     dc.w    -8250 
  1037.     dc.w    -8424 
  1038.     dc.w    -8595 
  1039.     dc.w    -8766 
  1040.     dc.w    -8935 
  1041.     dc.w    -9103 
  1042.     dc.w    -9269 
  1043.     dc.w    -9435 
  1044.     dc.w    -9598 
  1045.     dc.w    -9760 
  1046.     dc.w    -9921 
  1047.     dc.w    -10080 
  1048.     dc.w    -10238 
  1049.     dc.w    -10394 
  1050.     dc.w    -10549 
  1051.     dc.w    -10702 
  1052.     dc.w    -10854 
  1053.     dc.w    -11003 
  1054.     dc.w    -11151 
  1055.     dc.w    -11298 
  1056.     dc.w    -11443 
  1057.     dc.w    -11586 
  1058.     dc.w    -11727 
  1059.     dc.w    -11867 
  1060.     dc.w    -12004 
  1061.     dc.w    -12140 
  1062.     dc.w    -12274 
  1063.     dc.w    -12407 
  1064.     dc.w    -12537 
  1065.     dc.w    -12666 
  1066.     dc.w    -12792 
  1067.     dc.w    -12917 
  1068.     dc.w    -13039 
  1069.     dc.w    -13160 
  1070.     dc.w    -13279 
  1071.     dc.w    -13396 
  1072.     dc.w    -13511 
  1073.     dc.w    -13623 
  1074.     dc.w    -13734 
  1075.     dc.w    -13843 
  1076.     dc.w    -13949 
  1077.     dc.w    -14054 
  1078.     dc.w    -14156 
  1079.     dc.w    -14256 
  1080.     dc.w    -14354 
  1081.     dc.w    -14450 
  1082.     dc.w    -14544 
  1083.     dc.w    -14635 
  1084.     dc.w    -14724 
  1085.     dc.w    -14811 
  1086.     dc.w    -14896 
  1087.     dc.w    -14979 
  1088.     dc.w    -15059 
  1089.     dc.w    -15137 
  1090.     dc.w    -15213 
  1091.     dc.w    -15287 
  1092.     dc.w    -15358 
  1093.     dc.w    -15427 
  1094.     dc.w    -15493 
  1095.     dc.w    -15558 
  1096.     dc.w    -15619 
  1097.     dc.w    -15679 
  1098.     dc.w    -15736 
  1099.     dc.w    -15791 
  1100.     dc.w    -15843 
  1101.     dc.w    -15893 
  1102.     dc.w    -15941 
  1103.     dc.w    -15986 
  1104.     dc.w    -16029 
  1105.     dc.w    -16070 
  1106.     dc.w    -16108 
  1107.     dc.w    -16143 
  1108.     dc.w    -16176 
  1109.     dc.w    -16207 
  1110.     dc.w    -16235 
  1111.     dc.w    -16261 
  1112.     dc.w    -16285 
  1113.     dc.w    -16306 
  1114.     dc.w    -16324 
  1115.     dc.w    -16340 
  1116.     dc.w    -16354 
  1117.     dc.w    -16365 
  1118.     dc.w    -16373 
  1119.     dc.w    -16380 
  1120.     dc.w    -16383 
  1121.     dc.w    -16384 
  1122.     dc.w    -16383 
  1123.     dc.w    -16380 
  1124.     dc.w    -16373 
  1125.     dc.w    -16365 
  1126.     dc.w    -16354 
  1127.     dc.w    -16340 
  1128.     dc.w    -16324 
  1129.     dc.w    -16306 
  1130.     dc.w    -16285 
  1131.     dc.w    -16261 
  1132.     dc.w    -16235 
  1133.     dc.w    -16207 
  1134.     dc.w    -16176 
  1135.     dc.w    -16143 
  1136.     dc.w    -16108 
  1137.     dc.w    -16070 
  1138.     dc.w    -16029 
  1139.     dc.w    -15986 
  1140.     dc.w    -15941 
  1141.     dc.w    -15893 
  1142.     dc.w    -15843 
  1143.     dc.w    -15791 
  1144.     dc.w    -15736 
  1145.     dc.w    -15679 
  1146.     dc.w    -15619 
  1147.     dc.w    -15558 
  1148.     dc.w    -15493 
  1149.     dc.w    -15427 
  1150.     dc.w    -15358 
  1151.     dc.w    -15287 
  1152.     dc.w    -15213 
  1153.     dc.w    -15137 
  1154.     dc.w    -15059 
  1155.     dc.w    -14979 
  1156.     dc.w    -14896 
  1157.     dc.w    -14811 
  1158.     dc.w    -14724 
  1159.     dc.w    -14635 
  1160.     dc.w    -14544 
  1161.     dc.w    -14450 
  1162.     dc.w    -14354 
  1163.     dc.w    -14256 
  1164.     dc.w    -14156 
  1165.     dc.w    -14054 
  1166.     dc.w    -13949 
  1167.     dc.w    -13843 
  1168.     dc.w    -13734 
  1169.     dc.w    -13623 
  1170.     dc.w    -13511 
  1171.     dc.w    -13396 
  1172.     dc.w    -13279 
  1173.     dc.w    -13160 
  1174.     dc.w    -13039 
  1175.     dc.w    -12917 
  1176.     dc.w    -12792 
  1177.     dc.w    -12666 
  1178.     dc.w    -12537 
  1179.     dc.w    -12407 
  1180.     dc.w    -12274 
  1181.     dc.w    -12140 
  1182.     dc.w    -12004 
  1183.     dc.w    -11867 
  1184.     dc.w    -11727 
  1185.     dc.w    -11586 
  1186.     dc.w    -11443 
  1187.     dc.w    -11298 
  1188.     dc.w    -11151 
  1189.     dc.w    -11003 
  1190.     dc.w    -10854 
  1191.     dc.w    -10702 
  1192.     dc.w    -10549 
  1193.     dc.w    -10394 
  1194.     dc.w    -10238 
  1195.     dc.w    -10080 
  1196.     dc.w    -9921 
  1197.     dc.w    -9760 
  1198.     dc.w    -9598 
  1199.     dc.w    -9435 
  1200.     dc.w    -9269 
  1201.     dc.w    -9103 
  1202.     dc.w    -8935 
  1203.     dc.w    -8766 
  1204.     dc.w    -8595 
  1205.     dc.w    -8424 
  1206.     dc.w    -8250 
  1207.     dc.w    -8076 
  1208.     dc.w    -7901 
  1209.     dc.w    -7724 
  1210.     dc.w    -7546 
  1211.     dc.w    -7367 
  1212.     dc.w    -7187 
  1213.     dc.w    -7006 
  1214.     dc.w    -6823 
  1215.     dc.w    -6640 
  1216.     dc.w    -6456 
  1217.     dc.w    -6270 
  1218.     dc.w    -6084 
  1219.     dc.w    -5897 
  1220.     dc.w    -5709 
  1221.     dc.w    -5520 
  1222.     dc.w    -5330 
  1223.     dc.w    -5140 
  1224.     dc.w    -4949 
  1225.     dc.w    -4757 
  1226.     dc.w    -4564 
  1227.     dc.w    -4370 
  1228.     dc.w    -4176 
  1229.     dc.w    -3981 
  1230.     dc.w    -3786 
  1231.     dc.w    -3590 
  1232.     dc.w    -3394 
  1233.     dc.w    -3197 
  1234.     dc.w    -2999 
  1235.     dc.w    -2802 
  1236.     dc.w    -2603 
  1237.     dc.w    -2405 
  1238.     dc.w    -2205 
  1239.     dc.w    -2006 
  1240.     dc.w    -1806 
  1241.     dc.w    -1606 
  1242.     dc.w    -1406 
  1243.     dc.w    -1206 
  1244.     dc.w    -1005 
  1245.     dc.w    -804 
  1246.     dc.w    -604 
  1247.     dc.w    -403 
  1248.     dc.w    -202 
  1249.     dc.w    -1 
  1250.     dc.w     201 
  1251.     dc.w     402 
  1252.     dc.w     603 
  1253.     dc.w     803 
  1254.     dc.w     1004 
  1255.     dc.w     1205 
  1256.     dc.w     1405 
  1257.     dc.w     1605 
  1258.     dc.w     1805 
  1259.     dc.w     2005 
  1260.     dc.w     2204 
  1261.     dc.w     2404 
  1262.     dc.w     2602 
  1263.     dc.w     2801 
  1264.     dc.w     2998 
  1265.     dc.w     3196 
  1266.     dc.w     3393 
  1267.     dc.w     3589 
  1268.     dc.w     3785 
  1269.     dc.w     3980 
  1270.     dc.w     4175 
  1271.     dc.w     4369 
  1272.     dc.w     4563 
  1273.     dc.w     4756 
  1274.     dc.w     4948 
  1275.     dc.w     5139 
  1276.     dc.w     5329 
  1277.     dc.w     5519 
  1278.     dc.w     5708 
  1279.     dc.w     5896 
  1280.     dc.w     6083 
  1281.     dc.w     6269 
  1282.     dc.w     6455 
  1283.     dc.w     6639 
  1284.     dc.w     6822 
  1285.     dc.w     7005 
  1286.     dc.w     7186 
  1287.     dc.w     7366 
  1288.     dc.w     7545 
  1289.     dc.w     7723 
  1290.     dc.w     7900 
  1291.     dc.w     8075 
  1292.     dc.w     8249 
  1293.     dc.w     8423 
  1294.     dc.w     8594 
  1295.     dc.w     8765 
  1296.     dc.w     8934 
  1297.     dc.w     9102 
  1298.     dc.w     9268 
  1299.     dc.w     9434 
  1300.     dc.w     9597 
  1301.     dc.w     9759 
  1302.     dc.w     9920 
  1303.     dc.w     10079 
  1304.     dc.w     10237 
  1305.     dc.w     10393 
  1306.     dc.w     10548 
  1307.     dc.w     10701 
  1308.     dc.w     10853 
  1309.     dc.w     11002 
  1310.     dc.w     11150 
  1311.     dc.w     11297 
  1312.     dc.w     11442 
  1313.     dc.w     11585 
  1314.     dc.w     11726 
  1315.     dc.w     11866 
  1316.     dc.w     12003 
  1317.     dc.w     12139 
  1318.     dc.w     12273 
  1319.     dc.w     12406 
  1320.     dc.w     12536 
  1321.     dc.w     12665 
  1322.     dc.w     12791 
  1323.     dc.w     12916 
  1324.     dc.w     13038 
  1325.     dc.w     13159 
  1326.     dc.w     13278 
  1327.     dc.w     13395 
  1328.     dc.w     13510 
  1329.     dc.w     13622 
  1330.     dc.w     13733 
  1331.     dc.w     13842 
  1332.     dc.w     13948 
  1333.     dc.w     14053 
  1334.     dc.w     14155 
  1335.     dc.w     14255 
  1336.     dc.w     14353 
  1337.     dc.w     14449 
  1338.     dc.w     14543 
  1339.     dc.w     14634 
  1340.     dc.w     14723 
  1341.     dc.w     14810 
  1342.     dc.w     14895 
  1343.     dc.w     14978 
  1344.     dc.w     15058 
  1345.     dc.w     15136 
  1346.     dc.w     15212 
  1347.     dc.w     15286 
  1348.     dc.w     15357 
  1349.     dc.w     15426 
  1350.     dc.w     15492 
  1351.     dc.w     15557 
  1352.     dc.w     15618 
  1353.     dc.w     15678 
  1354.     dc.w     15735 
  1355.     dc.w     15790 
  1356.     dc.w     15842 
  1357.     dc.w     15892 
  1358.     dc.w     15940 
  1359.     dc.w     15985 
  1360.     dc.w     16028 
  1361.     dc.w     16069 
  1362.     dc.w     16107 
  1363.     dc.w     16142 
  1364.     dc.w     16175 
  1365.     dc.w     16206 
  1366.     dc.w     16234 
  1367.     dc.w     16260 
  1368.     dc.w     16284 
  1369.     dc.w     16305 
  1370.     dc.w     16323 
  1371.     dc.w     16339 
  1372.     dc.w     16353 
  1373.     dc.w     16364 
  1374.     dc.w     16372 
  1375.     dc.w     16379 
  1376.     dc.w     16382 
  1377.  
  1378.